package main

import (
	"fmt"
	"time"
)

func main() {
	// 创建一个通道用于任务完成信号
	done := make(chan bool)

	// 启动一个任务
	go func() {
		// 模拟耗时任务
		time.Sleep(2 * time.Second)
		done <- true
	}()

	// 设置超时时间为1秒
	// 如果 done 中有数据可读，则读取并输出数据；如果等待 1 秒钟后仍然没有数据，则超时并输出 timeout。
	select {
	case <-done:
		fmt.Println("任务完成")
	case <-time.After(1 * time.Second):
		fmt.Println("任务超时")
	}
}
